#include "consoimport.h"
#include "ui_consoimport.h"

ConsoImport::ConsoImport(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::ConsoImport)
{
    ui->setupUi(this);
    recherche = "";

    db = QSqlDatabase::database("guest");

    // On initialise le model
    model = new PromsModel(this);
    ui->listDispo->setModel(model);

    // Avec les prix
    MoneyDelegate *md = new MoneyDelegate(this);
    ui->listDispo->setItemDelegateForColumn(2,md);

    // On charge les consos
    reloadConsos();

    // On donne la main
    this->setFocus();

}

ConsoImport::~ConsoImport()
{
    delete ui;
    delete model;
}

void ConsoImport::reset()
{
    // On remet la recherche à zéro
    recherche = "";

    // On recharge les consos
    reloadConsos();
}

void ConsoImport::keyPressEvent(QKeyEvent *event)
{


    //Si la touche est une lettre ou un chiffre
    if((event->key() >= Qt::Key_A && event->key() <= Qt::Key_Z) || (event->key()>=Qt::Key_0 && event->key()<=Qt::Key_9) )
    {

        //On modifie le filtre
        recherche += event->text();

        // On recharge les consos
        reloadConsos();

    }

    if(event->key() == Qt::Key_Backspace){

        //Si c'est un retour arrière, on vide le filtre
        recherche = "";

        // On recharge les consos
        reloadConsos();

    }


    int k = event->key() - Qt::Key_F1;

    // Si c'est une touche F0
    if(k >= 0 && k< 12 && k< model->rowCount()){
        // On envoie le signal d'ajout de la conso (id,nom ,prix)
        emit bucquer(model->index(k,0).data().toInt(),model->index(k,1).data().toString(),model->index(k,2).data().toDouble());
    }

    // Si c'est Echap on envoie le signal de fin
    if(event->key() == Qt::Key_Escape){
        emit finBucquage();
    }


}

void ConsoImport::reloadConsos()
{

    // On redefini la requête
    model->setQuery("SELECT id, nom, prix FROM v_consos WHERE nom LIKE '%"+recherche+"%' LIMIT 0,12",db);

    // Puis les Headers
    model->setHeaderData(0,Qt::Horizontal,"Id");
    model->setHeaderData(1,Qt::Horizontal,"Nom");
    model->setHeaderData(2,Qt::Horizontal,"Prix");

    // On cache l'ID et on donne la bonne taille aux colonnes
    ui->listDispo->hideColumn(0);
    ui->listDispo->resizeColumnsToContents();
}
